package com.tiancheng.trade.settlement.service.settlement;

import com.tiancheng.trade.settlement.model.settlement.PaymentOrderBank;
import com.tiancheng.trade.settlement.model.settlement.PaymentOrderFinish;

import java.util.List;

/**
 * @Auther: liudong
 * @Date: 2024/4/10 16:06
 * @Param ${tags}
 * @Description: 对账服务
 */
public interface IReconciliationService {
    /**
     * 获取银行侧待对账数据
     *
     * @return
     */
    List<PaymentOrderBank> getBankCheckOrders();

    /**
     * 获取对账成功数据
     *
     * @param flowIds
     * @return
     */
    List<PaymentOrderFinish> getFinishBankOrders(List<String> flowIds);

    /**
     * 获取对账异常数据
     *
     * @param flowIds
     * @return
     */
    List<PaymentOrderFinish> getErrorBankOrders(List<String> flowIds);

    void batchSavePaymentOrders(List<PaymentOrderFinish> orderFinishes, List<String> orderIds);

    /**
     * 已完成对账表获取异常数据，flow_Id为空的数据
     */
    List<PaymentOrderFinish> getUnusualBankOrders();

    /**
     * 银行侧为空时，查询对账中心待对账订单是否有待对账数据，记录数据未匹配异常
     *
     * @return
     */
    List<PaymentOrderFinish> getUnusualOrders();

    /**
     * 流水对账，银行侧有数据与中心侧进行对账
     */
    List<PaymentOrderFinish> bankReconciliation(List<String> orderIds);

    /**
     * 中心侧有数据，银行侧无数据，记录异常订单（数据未匹配）
     */
    void settlementReconciliation();


}
